package com.lemobar.pay.model;

import com.lemobar.pay.enums.AliPayTradeStatusEnum;
import com.lemobar.pay.enums.WxPayTradeStatusEnum;
import com.lemobar.pay.model.alipay.response.AliPayTradeQueryResponse;
import com.lemobar.pay.model.wxpay.response.WxPayQueryResponse;
import lombok.Builder;
import lombok.Data;

import java.util.Date;

/**
 * 订单查询结果
 * {@link WxPayQueryResponse}
 * {@link AliPayTradeQueryResponse}
 */
@Data
@Builder
public class QueryResponse {


    /**
     * 业务结果
     * wx -> result_code SUCCESS/FAIL  SUCCESS=查询成功 FAIL=查询失败(去看errCode)   <br>
     * ali -> code 10000/其他   10000=关闭成  其他=查询失败(去看errCode) 公共错误码：https://opendocs.alipay.com/open/common/105806  + 业务错误码：...
     * epay -> resultCode  1/其他    1=成功   其他=失败
     */
    private String resultCode;

    /**
     * 业务返回码 错误代码                   <br>
     * wx -> err_code   业务错误码 https://pay.weixin.qq.com/wiki/doc/api/micropay.php?chapter=9_2#5
     * ali -> sub_code  公共错误码：https://opendocs.alipay.com/open/common/105806  + 业务错误码：...
     */
    private String errCode;

    /**
     * 业务返回 错误代码描述                 <br>
     * wx -> err_code_des
     * ali -> sub_msg
     */
    private String errCodeDes;

    /**
     * 商家订单号
     * wx -> out_trade_no
     * ali -> out_trade_no
     */
    private String orderId;

    /**
     * 外部订单号                             <br>
     * wx -> transaction_id                  <br>
     * ali -> trade_no
     * epay -> OrderNo   双乾交易流水号
     */
    private String outOrderId;

    /**
     * 买家用户标识                                       <br>
     * wx -> openid                              <br>
     * ali -> buyer_user_id 买家在支付宝的用户id
     * epay -> 双乾支付查询 没有
     */
    private String openid;



    /**
     * 订单状态
     * {@link WxPayTradeStatusEnum}
     * {@link AliPayTradeStatusEnum}
     */
    private String orderStatus;

    /**
     * 标价金额                      <br>
     * 订单总金额，单位为元            <br>
     * wx -> total_fee              <br>
     * ali -> total_amount
     */
    private Double orderAmount;


    /**
     * 支付完成时间                               <br>
     * wx -> time_end                           <br>
     * ali -> send_pay_date
     * epay -> 不准
     */
    private Date finishTime;


}
